package com.example.WeChat.Utiles.Encrypt;

import org.springframework.stereotype.Component;

/*
*
* 用户提交信息校验工具
*
*/
@Component
public class CalibrationInfo {

    // 验证用户名：允许字母、数字、下划线，长度为4-16位
    public static boolean isValidUsername(String username) {
        String regex = "^[a-zA-Z0-9_]{4,16}$";
        return username.matches(regex);
    }

    // 验证手机号：简单验证11位数字
    public static boolean isValidPhoneNumber(String phoneNumber) {
        String regex = "^\\d{11}$";
        return phoneNumber.matches(regex);
    }

    // 验证密码强度：至少包含字母、数字和特殊字符，长度至少8位
    public static boolean isValidPassword(String password) {
        // 至少包含一个字母、一个数字、一个特殊字符，长度至少8位
        String regex = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$";
        return password.matches(regex);
    }

    // 验证邮箱地址
    public static boolean isValidEmail(String email) {
        String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        return email.matches(regex);
    }

    // 验证身份证号：简单验证18位数字
    public static boolean isValidIDCard(String idCard) {
        String regex = "^\\d{18}$";
        return idCard.matches(regex);
    }

    // 防止SQL注入和非法输入：检查是否包含SQL特殊字符
    public static boolean isValidInput(String input) {
        // SQL特殊字符：'、"、;、--、/*、*/
        String[] sqlSpecialChars = {"'", "\"", ";", "--", "/*", "*/"};
        for (String sqlChar : sqlSpecialChars) {
            if (input.contains(sqlChar)) {
                return false;
            }
        }
        return true;
    }
}
